package com.rceeslca.common.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;

import java.io.Serializable;
import java.util.Collection;

/**
 * 基础服务接口
 * @author rceeslca
 */
public interface BaseService<T> {

    Class<T> currentModelClass();


    /**
     * 插入
     * @param entity 实体对象
     */
    boolean insert(T entity);


    /**
     * 批量插入
     * @param entityList 实体对象集合
     */
    boolean insertBatch(Collection<T> entityList);


    /**
     * 批量插入
     * @param entityList 实体对象集合
     * @param batchSize  插入批次数量
     */
    boolean insertBatch(Collection<T> entityList,int batchSize);


    /**
     * 根据id更改
     * @param entity 实体对象
     */
    boolean updateById(T entity);


    /**
     * 根据条件更改
     * @param entity 实体对象
     * @param updateWrapper 实体对象封装操作类
     */
    boolean update(T entity, Wrapper<T> updateWrapper);


    /**
     * 根据id批量更改
     * @param entityList 实体对象集合
     */
    boolean updateBatchById(Collection<T> entityList);


    /**
     * 根据id批量更改
     * @param entityList 实体对象集合
     * @param batchSize  更新批次数量
     */
    boolean updateBatchById(Collection<T> entityList,int batchSize);


    /**
     * 根据id查询
     * @param id 主键id
     */
    T selectById(Serializable id);


    /**
     * 根据id删除
     * @param id 主键id
     */
    boolean deleteById(Serializable id);


    /**
     * 根据id批量删除
     * @param idList 主键id列表
     */
    boolean deleteBatchIds(Collection<? extends Serializable> idList);

}
